﻿ 
//using Newtonsoft.Json;
//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Net.Http;
//using System.Text;
//using System.Threading.Tasks;
//using System.Web;

//namespace Hotel.UI.Common.Services
//{
//    public class Communicator
//    {
//        private Action<Response> CallBack = null;
//        AsyncTcpClient socketClient = SocketFactory.CreateClient<AsyncTcpClient>("127.0.0.1", 9090);

//        private string url = "http://127.0.0.1/api/";
//        HttpWebRequestHelper client = new HttpWebRequestHelper();
//        //  TcpClient client = SocketFactory.CreateClient<TcpClient>(packet, "127.0.0.1", 9090);

//        public Communicator(Action<Response> callBack)
//        {
//            CallBack = callBack;
//        }
//        public Communicator(string socketer, string httper, Action<Response> callBack)
//        {
//            CallBack = callBack;
//        }


//        public async void Send(Request request)
//        {
//            try
//            {
//                await Task.Run(() =>
//           {

//               if (request.Protocol == "socket")
//               {
//                   SendTcpResponse(request);


//               }
//               else if (request.Protocol == "webapi")
//               {
//                   SendHttpResponse(request);
//               }
//               else
//               {
//                   SendHttpResponse(request);
//               }
//           });
//            }
//            catch (AggregateException ex)
//            {
//                // enumerate the exceptions that have been aggregated
//                foreach (Exception inner in ex.InnerExceptions)
//                {
//                    Console.WriteLine("Exception type {0} from {1}",
//                        inner.GetType(), inner.Source);
//                }
//            }
//        }

//        public void InitTcpProtocol()
//        {

//            //SSL
//            //AsyncTcpClient client = SocketFactory.CreateSslClient<AsyncTcpClient>("127.0.0.1", 9090, "serviceName");
//            socketClient.ClientError = (o, e) =>
//             {
//                 Console.WriteLine("client error {0}@{1}", e.Message, e.Error);
//             };
//            socketClient.DataReceive = (o, e) =>
//            {
//                Console.WriteLine(e.Stream.ToPipeStream().ReadLine());
//            };

//        }
//        public void SendTcpResponse(Request request)
//        {

//            if (socketClient.IsConnected)
//            {
//                CallBack?.Invoke(new Response("访问socket成功"));
//            }
//        }
//        public void SendHttpResponse(Request request)
//        {
//            Response rs = new Response();
//            rs.RequestId = request.RequestId;
//            try
//            {
//                //var data = JsonConvert.SerializeObject(request.Parameter);
//                //rs = client.PostResponse<Response>(url + request.Route, data);
//                //rs.RequestId = request.RequestId;
//                throw new Exception("asdfaasdf");
//            }
//            catch (System.Exception ex)
//            {
//                rs.Message = ex.Message;
//            }
//            CallBack?.Invoke(rs);

//        }
//    }
//}
